﻿namespace OverStore.Sql
{
    /// <summary>
    /// Base interface for component process SQL abstract syntax tree and performs a part of 
    /// transformation before AST may be rendered to string.
    /// </summary>
    public interface ISqlAstTransform
    {
        /// <summary>
        /// Transforms the specified source expression.
        /// </summary>
        /// <param name="sourceExpression">The source expression.</param>
        /// <returns>New table expression.</returns>
        TableExpression Transform(TableExpression sourceExpression);
    }
}
